{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "_UXAjutbMhoa"
   },
   "source": [
    "#  Que peuvent faire les *transformers* ?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "P3GIqRT-Mhoe"
   },
   "source": [
    "Installez la bibliothèque 🤗 *Transformers* pour exécuter ce *notebook*."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "KGUwAC1zMhoj"
   },
   "outputs": [],
   "source": [
    "!pip install transformers[sentencepiece]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "ehB754vsO78P"
   },
   "outputs": [],
   "source": [
    "from transformers import pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5VmlNOR-OdIU"
   },
   "source": [
    "### Analyse de sentiments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "ILYepD-3Mhom"
   },
   "outputs": [],
   "source": [
    "classifier = pipeline(\"sentiment-analysis\")\n",
    "classifier(\"I've been waiting for a HuggingFace course my whole life.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "uYmC3B-ZMhoo"
   },
   "outputs": [],
   "source": [
    "classifier = pipeline(\"sentiment-analysis\", model=\"tblard/tf-allocine\")\n",
    "classifier(\"J'ai attendu un cours d'HuggingFace toute ma vie.\") "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "WSiD3eYEMhos"
   },
   "source": [
    "Intéressant ! On observe que le résultat est négatif là où pour la version en anglais le résultat est positif."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "6jo4BXTXMhou"
   },
   "outputs": [],
   "source": [
    "classifier(\n",
    "    [\"J'ai attendu un cours d'HuggingFace toute ma vie.\", \n",
    "     \"Je déteste tellement ça !\"]\n",
    ") # pour classifier plusieurs phrases"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vpC8hlc_OBc8"
   },
   "source": [
    "La phrase \"J'ai attendu un cours d'HuggingFace toute ma vie.\" qui était précedemment négative devient à présent positive."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "8LQ52fFqOrQa"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "TgmwK2d6OlFE"
   },
   "source": [
    "### Zéro shot classification"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "agGiUvz5Mho1"
   },
   "outputs": [],
   "source": [
    "classifier = pipeline(\"zero-shot-classification\", model=\"BaptisteDoyen/camembert-base-xnli\")\n",
    "classifier(\n",
    "    \"C'est un cours sur la bibliothèque Transformers\",\n",
    "    candidate_labels=[\"éducation\", \"politique\", \"affaires\"],\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "X1WCoo63Mho4"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kujBeTwDO9_3"
   },
   "source": [
    "### Génération de texte"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "66Sc0NpBMho6"
   },
   "outputs": [],
   "source": [
    "generator = pipeline(\"text-generation\", model=\"asi/gpt-fr-cased-small\")\n",
    "generator(\"# Dans ce cours, nous vous enseignerons comment\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "wb6QpQF6Mho8"
   },
   "outputs": [],
   "source": [
    "generator = pipeline(\"text-generation\", model=\"asi/gpt-fr-cased-small\")\n",
    "generator(\n",
    "    \"# Dans ce cours, nous vous enseignerons comment\",\n",
    "    max_length=30,\n",
    "    num_return_sequences=1,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "PvMBHts1Mho9"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0kU4aFbAPZ5a"
   },
   "source": [
    "### Remplacement des mots masqués"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "6UV_20PfMho_"
   },
   "outputs": [],
   "source": [
    "unmasker = pipeline(\"fill-mask\", model=\"camembert-base\")\n",
    "unmasker(\" Ce cours vous apprendra tout sur les modèles <mask>.\", top_k=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "cyZdM9VqMhpC"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "PvNljOY6Pao6"
   },
   "source": [
    "### Reconnaissance d'entités nommées"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "_k7zh7FYMhpD"
   },
   "outputs": [],
   "source": [
    "ner = pipeline(\"ner\", model=\"Jean-Baptiste/camembert-ner\", grouped_entities=True)\n",
    "ner(\"Je m'appelle Sylvain et je travaille à Hugging Face à Brooklyn.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "XZdeSFqnMhpF"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZEIu6FbnQUTb"
   },
   "source": [
    "### Réponse à des questions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "ZTX2bUsgMhpG"
   },
   "outputs": [],
   "source": [
    "question_answerer = pipeline(\"question-answering\", model=\"etalab-ia/camembert-base-squadFR-fquad-piaf\")\n",
    "question_answerer(\n",
    "    question=\"Où est-ce que je travaille ?\",\n",
    "    context=\"Je m'appelle Sylvain et je travaille à Hugging Face à Brooklyn.\",\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Cz8QMHu8MhpI"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XZQEgjAZQW7-"
   },
   "source": [
    "###  Résumé"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "7m_mQN_jMhpJ"
   },
   "outputs": [],
   "source": [
    "summarizer = pipeline(\"summarization\", model=\"moussaKam/barthez-orangesum-abstract\")\n",
    "summarizer(\n",
    "    \"\"\"\n",
    "    L'Amérique a changé de façon spectaculaire au cours des dernières années. Non seulement le nombre de \n",
    "    diplômés dans les disciplines traditionnelles de l'ingénierie telles que le génie mécanique, civil, \n",
    "    l'électricité, la chimie et l'aéronautique a diminué, mais dans la plupart \n",
    "    des grandes universités américaines, les programmes d'études d'ingénierie se concentrent désormais sur \n",
    "    et encouragent largement l'étude des sciences de l'ingénieur. Par conséquent, il y a \n",
    "    de moins en moins d'offres dans les sujets d'ingénierie traitant de l'infrastructure, \n",
    "    l'environnement et les questions connexes, et une plus grande concentration sur les sujets de haute \n",
    "    technologie, qui soutiennent en grande partie des développements scientifiques de plus en plus \n",
    "    complexes. Si cette dernière est importante, elle ne doit pas se faire au détriment\n",
    "    de l'ingénierie plus traditionnelle.\n",
    "\n",
    "    Les économies en développement rapide telles que la Chine et l'Inde, ainsi que d'autres \n",
    "    pays industrialisés d'Europe et d'Asie, continuent d'encourager et de promouvoir\n",
    "    l'enseignement de l'ingénierie. La Chine et l'Inde, respectivement, diplôment \n",
    "    six et huit fois plus d'ingénieurs traditionnels que les États-Unis. \n",
    "    Les autres pays industriels maintiennent au minimum leur production, tandis que l'Amérique \n",
    "    souffre d'une baisse de plus en plus importante du nombre de diplômés en ingénierie\n",
    "    et un manque d'ingénieurs bien formés.\n",
    "\"\"\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "D6VvM9ZTMhpL"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "T9Ombhj_QrDc"
   },
   "source": [
    "###  Traduction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "VTIsplaDMhpM"
   },
   "outputs": [],
   "source": [
    "translator = pipeline(\"translation\", model=\"Helsinki-NLP/opus-mt-en-fr\")\n",
    "translator(\"This course is produced by Hugging Face.\")"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
